博客
关于我
Django 可重用注册登录系统
阅读量:655 次
发布时间:2019-03-15

本文共 4209 字,大约阅读时间需要 14 分钟。

Django注册登录系统搭建详细指南

Django是一个高效的Web开发框架,适合快速搭建复杂的Web应用。在本文中,我们将详细介绍如何搭建一个功能全面的注册登录系统,涵盖从环境搭建到系统优化的各个环节。

1. 项目开始前的思考

在开始项目开发之前,我们需要明确项目的需求和技术架构。以下是需要重点关注的几个方面:

路由配置

路由配置是项目的骨干,负责如何将用户请求映射到相应的视图函数和模板。通过Django的urlconf工厂,我们可以灵活地配置路由规则。

视图配置

视图配置是项目的核心,决定了用户请求如何被处理。我们需要定义各个HTTP方法对应的处理逻辑,例如GET、POST等。

数据库模型设计

数据库模型是项目的基础,决定了数据如何存储和查询。我们需要设计一个用户表,存储用户的基本信息、登录记录等。

模板设计

模板是前端展示的基础,需要设计首页、登录页面、注册页面等模板,确保界面友好且功能完善。

2. 搭建项目环境

安装Django

通过命令安装Django框架,并创建一个新的项目环境以隔离依赖项。

pip install djangopython manage.py startproject login

创建应用

新建必要的应用程序用于存储用户数据和逻辑。

python manage.py createapp login

设置时区和语言

确保项目使用正确的时区和语言设置。

LANGUAGE_CODE = 'zh-hans'TIME_ZONE = 'Asia/Shanghai'

数据库迁移

生成数据库迁移脚本并将数据库表创建出来。

python manage.py makemigrationspython manage.py migrate

启动开发服务器

启动Django开发服务器,测试项目是否正常运行。

python manage.py runserver

提交代码到版本控制

使用Git进行代码管理和版本控制。

git initgit add *git commit -m "项目环境搭建完成"

3. 设计数据库模型

用户表是项目的核心数据表,存储用户的基本信息和相关时间字段。

from django.db import modelsclass SiteUser(models.Model):    gender_choice = (        (0, '未知'),        (1, '男'),        (2, '女'),    )    name = models.CharField(max_length=128, unique=True)    password = models.CharField(max_length=256)    email = models.EmailField(unique=True)    gender = models.IntegerField(choices=gender_choice, default=0)    create_time = models.DateTimeField(auto_now_add=True)    modify_time = models.DateTimeField(auto_now=True)    last_login_time = models.DateTimeField(null=True, blank=True)

4. 路由与视图框架搭建

路由配置

通过urlconf工厂定义路由规则,确保每个URL都有对应的视图处理。

from django.urls import pathfrom login import viewsurlpatterns = [    path('admin/', admin.site.urls),    path('', include('login.urls')),]

视图函数配置

定义各个视图函数,处理不同请求方法。

from django.shortcuts import render, redirectdef index(request):    return render(request, 'login/index.html')def login(request):    if request.method == 'POST':        # 登录逻辑        pass    return render(request, 'login/login.html')def register(request):    if request.method == 'POST':        # 注册逻辑        pass    return render(request, 'login/register.html')def logout(request):    if request.session.get('is_login'):        request.session.flush()        return redirect('/login/')    return redirect('/login/')

5. 前端界面设计与优化

登录页面优化

通过Django的表单类简化前端开发流程,确保表单数据验证和处理更加高效。

from django import formsfrom captcha.fields import CaptchaFieldclass LoginForm(forms.Form):    username = forms.CharField(label='用户名', required=True, min_length=4, max_length=128)    password = forms.CharField(label='密码', required=True, min_length=4, max_length=10)    captcha = CaptchaField(label='验证码')

注册页面优化

支持邮箱注册,添加验证码验证,确保用户信息安全。

class RegisterForm(forms.Form):    username = forms.CharField(label='用户名', required=True, min_length=4, max_length=128)    password1 = forms.CharField(label='密码', max_length=256, required=True)    password2 = forms.CharField(label='确认密码', max_length=256, required=True)    email = forms.EmailField(label='邮箱地址')    captcha = CaptchaField(label='验证码')

邮箱注册实现

通过邮件发送确认码,实现邮件注册功能。

import hashlibfrom datetime import datetimefrom django.core.mail import send_mailfrom login.models import ConfirmStringdef hash_code(s, salt='mysite'):    h = hashlib.sha256()    h.update(s.encode())    return h.hexdigest()def make_confirm_string(user):    now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")    code = hash_code(user.name, now)    ConfirmString.objects.create(code=code, user=user)    return codedef send_email(email, code):    subject = '注册确认邮件'    text_content = f'感谢注册,以下是您的验证链接:{request.scheme}://{request.get_full_url()}:8080/confirm/?code={code}'    html_content = f'

感谢注册点击验证,这里是登录注册系统网站!

请点击站点链接完成注册确认!

此链接有效期为{settings.CONFIRM_DAYS}天!

' send_mail(subject, text_content, settings.EMAIL_HOST_USER, [email, ], html_message=html_content)

6. 邮件确认与登录优化

邮件确认处理

通过新增确认码模型,实现邮件确认功能。

from login.models import ConfirmStringclass ConfirmStringAdmin(admin.ModelAdmin):    list_display = ['user', 'code', 'create_time']    ordering = ['-create_time']

登录规则优化

确保未经过邮件确认的用户无法登录。

def login(request):    if not request.session.get('is_login'):        if not request.session.get('has_confirmed'):            message = '该用户还未经过邮件确认!'            return render(request, 'login/login.html', locals())    # 其他登录逻辑

通过以上步骤,我们可以完整地搭建一个功能完善的注册登录系统,涵盖用户管理、安全验证、前端优化等多个方面。

转载地址:http://kkrlz.baihongyu.com/

你可能感兴趣的文章
Objective-C实现人工势场法(附完整源码)
查看>>
Objective-C实现代理服务器(附完整源码)
查看>>
Objective-C实现令牌桶算法(附完整源码)
查看>>
Objective-C实现以递归的形式MatrixExponentiation矩阵求幂算法 (附完整源码)
查看>>
Objective-C实现仿射密码算法(附完整源码)
查看>>
Objective-C实现优先数调度算法(附完整源码)
查看>>
Objective-C实现优先级调度算法(附完整源码)
查看>>
Objective-C实现优先队列算法(附完整源码)
查看>>
Objective-C实现伽玛Gamma函数(附完整源码)
查看>>
Objective-C实现位置型pid算法(附完整源码)
查看>>
Objective-C实现低通滤波器(附完整源码)
查看>>
Objective-C实现余弦cosx函数(附完整源码)
查看>>
Objective-C实现余数定理算法(附完整源码)
查看>>
Objective-C实现使用 ziggurat() 作为 OpenMP 并行程序中的随机数生成器 (RNG)(附完整源码)
查看>>
Objective-C实现使用DisjointSet 检测无向循环算法(附完整源码)
查看>>
Objective-C实现使用Prim算法确定图的最小生成树算法(附完整源码)
查看>>
Objective-C实现使用二元运算符将两个数字相加fullAdder算法(附完整源码)
查看>>
Objective-C实现使用分而治之找到单峰列表的峰值算法(附完整源码)
查看>>
Objective-C实现使用数组实现约瑟夫环(附完整源码)
查看>>
Objective-C实现使用管道重定向进程输入输出(附完整源码)
查看>>